home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Other Langs / MacPerl ƒ / Perl Source ƒ / Perl / t / mac / Chat.t < prev    next >
Text File  |  1993-10-24  |  2KB  |  60 lines

  1. #!/usr/local/bin/perl
  2.  
  3. require "macchat.pl";
  4.  
  5. $family = &MacPerl'Pick("Choose a socket family", "Unix", "Appletalk", "TCP/IP", "PPC")
  6.     || die "You didn't specify a socket family !";
  7.  
  8. $server = answer("Who are you ?", "Server", "Client");
  9.  
  10. if ($family eq "Unix") {
  11.     $family = &GUSI'AF_UNIX;
  12.     $addr =     &MacPerl'Choose($family, 0, "", "", $server ? &GUSI'CHOOSE_NEW : 0)
  13.             || &GUSI'pack_sockaddr_un($family, "MacChat");
  14. } elsif ($family eq "Appletalk") {
  15.     $family = &GUSI'AF_APPLETALK;
  16.     $addr =     
  17.         &MacPerl'Choose($family, 0, "Address ?", 
  18.             &GUSI'pack_sa_constr_atlk("MacChat"), 
  19.             $server ? &GUSI'CHOOSE_NEW : 0);
  20.     unless ($addr) {
  21.         $addr = &GUSI'pack_sockaddr_atlk_sym(&GUSI'ATALK_SYMADDR, "MacChat", "MacChat", "*");
  22.     }
  23. } elsif ($family eq "TCP/IP") {
  24.     $family = &GUSI'AF_INET;
  25.     $addr = ($server ? 0 : (ask("Host ?") || die "You refused to specify a host !"));
  26.     $port = ask("Port ?") || die "You refused to specify a port number !";
  27.     $addr = &GUSI'pack_sockaddr_in($family, $addr, $port);
  28. } elsif ($family eq "PPC") {
  29.     $family = &GUSI'AF_PPC;
  30. }
  31.  
  32. if ($server) {
  33.     &macchat'open_listen($family, $addr) || die "Opening failed";
  34.     &macchat'print("Welcome to this chat server.\n");
  35. } else {
  36.     &macchat'open_port($family, $addr) || die "Opening failed";
  37. }
  38.  
  39. print "?\n";
  40.  
  41. while (<>) {
  42.     if (/wr (.*)/) {
  43.         &macchat'print("$1\n");
  44.     } elsif (/rd/) {
  45.         &macchat'expect(10, 
  46.             '.|\n', q{print $macchat'thisbuf; undef $macchat'S},
  47.             'TIMEOUT',  q{print "Timed out !\n"; undef $macchat'S});
  48.     } elsif (/q/) {
  49.         last;
  50.     } else {
  51.         print "Valid commands are:\n";
  52.         print "   rd                  - Read a line.\n";
  53.         print "   wr text             - Write a line.\n";
  54.         print "   q                   - Quit.\n";
  55.     }
  56.     print "\n?\n";
  57. }
  58.  
  59. print "\nHave a nice day.\n";
  60.